From 727993933189f5be38264c96ad240cf61b0f3596 Mon Sep 17 00:00:00 2001 From: Richard Hult Date: Tue, 25 Mar 2008 13:35:20 +0000 Subject: [PATCH] Plug a leak and add a check that we have a toplevel before accessing it. 2008-03-25 Richard Hult * gdk/quartz/gdkwindow-quartz.c: (gdk_window_quartz_process_all_updates): Plug a leak and add a check that we have a toplevel before accessing it. svn path=/trunk/; revision=19933 --- ChangeLog | 6 ++++++ gdk/quartz/gdkwindow-quartz.c | 32 +++++++++++++++++++------------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 866cffae92..5159ce7c0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-03-25 Richard Hult + + * gdk/quartz/gdkwindow-quartz.c: + (gdk_window_quartz_process_all_updates): Plug a leak and add a + check that we have a toplevel before accessing it. + 2008-03-24 Tor Lillqvist Bug 524151 - Dragging of 0-byte files results in an empty filename diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index b72097e940..6aec5e1a4f 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -347,19 +347,24 @@ gdk_window_quartz_process_all_updates (void) { GdkWindow *window = tmp_list->data; GdkWindow *toplevel; - NSWindow *nswindow; - GdkWindowObject *private; - GdkWindowImplQuartz *impl; + /* Only flush each toplevel at most once. */ toplevel = gdk_window_get_toplevel (window); - private = (GdkWindowObject *) toplevel; - impl = (GdkWindowImplQuartz *) private->impl; - nswindow = impl->toplevel; - - if (nswindow && ![nswindow isFlushWindowDisabled]) + if (toplevel) { - [nswindow disableFlushWindow]; - nswindows = g_slist_prepend (nswindows, nswindow); + GdkWindowObject *private; + GdkWindowImplQuartz *impl; + NSWindow *nswindow; + + private = (GdkWindowObject *) toplevel; + impl = (GdkWindowImplQuartz *) private->impl; + nswindow = impl->toplevel; + + if (nswindow && ![nswindow isFlushWindowDisabled]) + { + [nswindow disableFlushWindow]; + nswindows = g_slist_prepend (nswindows, nswindow); + } } gdk_window_quartz_process_updates_internal (tmp_list->data); @@ -368,14 +373,15 @@ gdk_window_quartz_process_all_updates (void) tmp_list = tmp_list->next; } - while (nswindows) + tmp_list = nswindows; + while (tmp_list) { - NSWindow *nswindow = nswindows->data; + NSWindow *nswindow = tmp_list->data; [nswindow enableFlushWindow]; [nswindow flushWindow]; - nswindows = nswindows->next; + tmp_list = tmp_list->next; } GDK_QUARTZ_RELEASE_POOL; -- 2.30.2